home *** CD-ROM | disk | FTP | other *** search
- Gofer version 2.28 Fri Feb 12 00:00:00 EST 1993
- ------------------------------------------------------------------------------
- This directory contains the source code, documentation and demonstrations for
- Gofer version 2.28, an interactive functional programming environment (i.e. an
- interpreter!) supporting a language based on the Haskell report version 1.2
- (recently published in ACM Sigplan notices).
-
- The following features are included in Gofer 2.28:
-
- o Lazy evaluation, higher order functions, pattern matching etc...
-
- o Wide range of built-in types with provision for defining new free
- datatypes and type synonyms.
-
- o Polymorphic type system with provision for overloading based on
- a system of type classes.
-
- o Full Haskell 1.2 expression and pattern syntax including lambda,
- case, conditional and let expressions, list comprehensions, operator
- sections, and wildcard, as and irrefutable patterns.
-
- o Partial implementation of Haskell 1.2 facilities for I/O, enabling
- the use of simple interactive programs and programs reading and writing
- text files.
-
- o User documentation, sample programs and source code freely available.
-
- o Supports constructor classes and overloaded monad comprehensions.
-
- o Simple minded compiler/translator Gofer -> C with runtime system for
- generation of standalone applications.
-
- o Runs (and originally developed) on PC compatible computers, but
- also works on Sun workstations. Code should be portable to many
- other kinds of machine.
-
- Gofer is intended as an experimental language, particularly where type classes
- are involved. Gofer extends the Haskell type class system in several ways:
-
- o Type classes with multiple parameters are supported.
-
- o Instances of type classes may be defined non-overlapping, but otherwise
- arbitrary types.
-
- o Predicates in contexts may involve arbitrary type expressions, not just
- type variables as in Haskell.
-
- o Basic approach to dictionary construction is different, based on the
- approach I described in a posting to the Haskell mailing list early in
- Feburary 1991. The resulting system ensures that all dictionaries are
- constructed before evaluation begins, avoiding repeated construction
- and enabling the shared evaluation of overloaded constants in
- dictionaries.
-
- The most significant features of Haskell not currently supported are:
- modules, arrays, overloaded numeric constants, default declarations, derived
- instances, contexts in datatype definitions.
- ------------------------------------------------------------------------------
-
- This directory contains the following files:
-
- README This file -- you're already reading it!
-
- gofer2.28.tar.Z Source code for Gofer system. You will need this (and a
- C compiler) to produce a version of Gofer to run on your
- machine.
-
- preludes.tar.Z A small collection of prelude files for use with
- Gofer 2.28.
-
- demos.tar.Z Demonstration programs.
-
- docs.tar.Z Documentation for the Gofer system. ASCII formatted
- text including main user guide and release notes for
- versions 2.21 and 2.28. Also include Jeroen Fokker's
- LaTeX version of the original Gofer manual.
-
- Please get a copy of this file and read (at least) the
- file release.228...
-
- docsrc.tar.Z Source for the ASCII version of the Gofer documentation.
- Most users will not need this, but it is provided here
- for the benefit of anyone that wants to prepare an
- ASCII version for printing with a different page size.
- Note that you will need a copy of docs.tar.Z even if
- you also take a copy of this file; not all parts of the
- documentation are included in docsrc.tar.Z.
-
- The following files will only be of interest to PC (i.e. DOS) users:
-
- readme.pc A copy of the readme file in pcgof228.zip.
-
- pcgof228.zip A binary version of Gofer 2.28 for use on standard PCs.
- All the demonstration programs and preludes are included
- in this file, so you won't need to fetch them separately.
- This file contains everything you need to use Gofer on a
- PC -- no C compiler is necessary. Please ensure that you
- have read and understood the README.PC file included with
- this ZIP archive before using these programs.
-
- 386gofer.zip Executable and additional source for a 386 version of
- Gofer 2.28, compiled with DJGPP (GNU C for DOS). If you
- have a 386 or better PC, get this; it gives you the
- chance to have a much bigger heap, faster execution and
- 32 bit integers.
-
- calvin21.zip A small vi-like editor; my recommendation for use with
- Gofer on an MSDOS PC.
-
- unz50p1.exe The INFO-ZIP unzip utility in binary form. You will need
- this to unpack the .zip files above. Just run the program
- in an empty directory; it is a self extracting archive.
- Make sure that you don't confuse the INFO-ZIP readme
- with the Gofer readmes!
-
- pcgof223.zip Executable and demonstration programs for the PC
- version of Gofer 2.23. This is provided just in case
- anyone wants to use Gofer on an old PC without enough
- memory to support 2.28. If you haven't got enough for
- 2.28 then you probably can't run 2.23 either. But just
- in case ...
-
- Files ending with .tar.Z should be unpacked (on a Unix machine) by creating
- and changing to a new directory and typing:
-
- zcat FILE.tar.Z | tar xvf -
-
- where FILE.tar.Z is the appropriate file name. Files ending in just .Z
- should be unpacked using the uncompress utility:
-
- uncompress -v FILE.Z
-
- Don't forget that any files with names ending in ".Z", ".zip" or ".exe"
- should be tranfered in binary mode.
-
- ------------------------------------------------------------------------------
-
- Please do not hesitate to contact me if you have any problems with the files
- in this directory, or questions, comments or suggestions about Gofer.
-
- I hope that you will enjoy using Gofer!
-
- Mark jones-mark@cs.yale.edu
-
- ------------------------------------------------------------------------------
- Disclaimer: Gofer is supplied "as is" without express or implied warranty
- and is subject to terms and conditions of use as set out in the documentation
- and source code.
- ------------------------------------------------------------------------------
-